package com.yingxin.yxerp.module.organization.vo.req;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yingxin.yx.framework.commons.dto.AttachmentDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 用户
 * </p>
 *
 * @author fanchao
 * @since 2021-05-13
 */

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "UserCreateVo对象", description = "用户")
public class UserCreateVo implements Serializable {

    private static final long serialVersionUID = 1L;


    @ApiModelProperty(value = "姓名")
    @Length(max = 35)
    @NotBlank(message = "姓名不能为空")
    private String staffName;

    @ApiModelProperty(value = "姓名")
    @Length(max = 35)
    @NotBlank(message = "账号不能为空")
    private String username;

    @ApiModelProperty(value = "员工编号")
    private Integer staffNo;

    @ApiModelProperty(value = "试用期 SY 在职 ZZ 离职 LZ")
    @Length(max = 10)
    private String staffStatus;

    @ApiModelProperty(value = "初始密码")
    private String password;

    @ApiModelProperty(value = "账号状态")
    private String accountStatus;

    @ApiModelProperty(value = "dept_id")
    private String deptId;

    @ApiModelProperty(value = "company_id")
    private String companyId;

    @ApiModelProperty(value = "职位id")
    private Integer staffPositionId;

    @ApiModelProperty(value = "岗位id")
    private Integer workType;

    @ApiModelProperty(value = "电话")
    @Length(max = 25)
    private String phone;

//    @ApiModelProperty(value = "微信")
//    @Length(max = 35)
//    private String wechatNickname;

    @ApiModelProperty(value = "邮箱")
    @Length(max = 35)
    private String email;

    //@ApiModelProperty(value = "头像")
    //@Length(max = 800)
    //private String avatar;

    @ApiModelProperty(value = "身份证号码")
    @Length(max = 35)
    private String idCardNo;

    @ApiModelProperty(value = "身份证住址")
    @Length(max = 300)
    private String certAddress;

    @ApiModelProperty(value = "性别 F-女 M-男")
    @Length(max = 1)
    private String sex;

    @ApiModelProperty(value = "生日")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date birthday;

    @ApiModelProperty(value = "民族Id")
    @Length(max = 15)
    private String nationId;

    @ApiModelProperty(value = "民族")
    @Length(max = 15)
    private String nation;

    @ApiModelProperty(value = "政治面貌")
    @Length(max = 10)
    private String politicalOutlook;

    @ApiModelProperty(value = "婚姻状态")
    @Length(max = 10)
    private String maritalStatus;

    @ApiModelProperty(value = "籍贯 省")
    @Length(max = 50)
    private String nativeProvince;

    @ApiModelProperty(value = "籍贯 市")
    @Length(max = 50)
    private String nativeCity;

    @ApiModelProperty(value = "籍贯 区")
    @Length(max = 50)
    private String nativeDistrict;

    @ApiModelProperty(value = "居住地")
    @Length(max = 50)
    private String residencePlace;

    @ApiModelProperty(value = "学历")
    @Length(max = 10)
    private String education;

    @ApiModelProperty(value = "毕业学校")
    @Length(max = 50)
    private String graduationSchool;

    @ApiModelProperty(value = "毕业日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date graduationTime;

    @ApiModelProperty(value = "专业")
    @Length(max = 50)
    private String major;

    @ApiModelProperty(value = "紧急联系人")
    @Length(max = 35)
    private String emergencyContactName;

    @ApiModelProperty(value = "紧急联系人电话")
    @Length(max = 25)
    private String emergencyContactPhone;

    @ApiModelProperty(value = "紧急联系人地址")
    @Length(max = 50)
    private String emergencyContactAddress;

    @ApiModelProperty(value = "紧急联系人关系")
    @Length(max = 10)
    private String emergencyContactRelationship;

    @ApiModelProperty(value = "银行卡号码")
    @Length(max = 50)
    private String bankCardNo;

    @ApiModelProperty(value = "开户行")
    @Length(max = 50)
    private String bank;

    @ApiModelProperty(value = "入职时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date entryTime;

    @ApiModelProperty(value = "试用期时长")
    @Length(max = 10)
    private String probationPeriod;

    @ApiModelProperty(value = "转正时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date regularTime;

    @ApiModelProperty(value = "离职时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date departureTime;

    @ApiModelProperty(value = "备注")
    @Length(max = 255)
    private String remarks;

    @ApiModelProperty(value = "头像附件")
    private AttachmentDto avatarAttachment;

    @ApiModelProperty(value = "身份证正面")
    private AttachmentDto idCardFrontAttachment;

    @ApiModelProperty(value = "身份证反面")
    private AttachmentDto idCardBackAttachment;

    @ApiModelProperty(value = "学历附件")
    private List<AttachmentDto> educationAttachmentList;

}